package s47.dqj.dao;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import s47.dqj.bean.DepartmentLogin;
import s47.dqj.bean.DepartmentPerson;
import s47.dqj.bean.SystemLogin;

/**
 * 25.系统登录信息表
 * @author Administrator
 *
 */
@Repository("systemLoginDaoImpl")
public class SystemLoginDaoImpl extends HibernateDaoSupport implements SystemLoginDaoInf{
	
	/* (non-Javadoc)
	 * @see s47.dqj.dao.SystemLoginDaoInf#setSupperSessionFactory(org.hibernate.SessionFactory)
	 */
	@Override
	@Resource(name="sessionFactory")
	public void setSupperSessionFactory(SessionFactory sessionFactory){
		super.setSessionFactory(sessionFactory);
	}
	/* (non-Javadoc)
	 * @see s47.dqj.dao.SystemLoginDaoInf#findAllBySldate(s47.dqj.bean.SystemLogin, java.lang.Integer)
	 */
	@Override
	public List<SystemLogin> findAllBySldate(SystemLogin systemLogin,Integer pageNum){
		String hql="from SystemLogin as sl where sl.sldate=:sldate";
		Query query=getSession().createQuery(hql);
		query.setDate("sldate", systemLogin.getSldate());
		query.setFirstResult((pageNum-1)*20);
		query.setMaxResults(20);
		return query.list();
	}
	/* (non-Javadoc)
	 * @see s47.dqj.dao.SystemLoginDaoInf#selectPageTotalBySldate(s47.dqj.bean.SystemLogin)
	 */
	@Override
	public List<Integer> selectPageTotalBySldate(SystemLogin systemLogin){
		List<Integer> pageTotal=new ArrayList<Integer>();
		int p;
		Long temp;
		String hql="select Count(*) from SystemLogin as sl where sl.sldate=:sldate";
		Query query=getSession().createQuery(hql);
		query.setDate("sldate", systemLogin.getSldate());	
		temp=(Long)query.uniqueResult();
		
		if(temp%20!=0)
			p=(int)(temp/20+1);
		else
			p=(int)(temp/20);
		for(int n=0;n<p;n++){
			pageTotal.add(n+1);
		}
		return pageTotal;
	}
	
	/* (non-Javadoc)
	 * @see s47.dqj.dao.SystemLoginDaoInf#findAllByDpid(s47.dqj.bean.SystemLogin, java.lang.Integer)
	 */
	@Override
	public List<SystemLogin> findAllByDpid(SystemLogin systemLogin,Integer pageNum){
		String hql="from SystemLogin as sl where sl.dpid.dpid=:dpid";
		Query query=getSession().createQuery(hql);
		query.setInteger("dpid", systemLogin.getDpid().getDpid());
		query.setFirstResult((pageNum-1)*20);
		query.setMaxResults(20);
		return query.list();
	}
	/* (non-Javadoc)
	 * @see s47.dqj.dao.SystemLoginDaoInf#selectPageTotalByDpid(s47.dqj.bean.SystemLogin)
	 */
	@Override
	public List<Integer> selectPageTotalByDpid(SystemLogin systemLogin){
		List<Integer> pageTotal=new ArrayList<Integer>();
		int p;
		Long temp;
		String hql="select Count(*) from SystemLogin as sl where sl.dpid.dpid=:dpid";
		Query query=getSession().createQuery(hql);
		query.setInteger("dpid", systemLogin.getDpid().getDpid());	
		temp=(Long)query.uniqueResult();
		
		if(temp%20!=0)
			p=(int)(temp/20+1);
		else
			p=(int)(temp/20);
		for(int n=0;n<p;n++){
			pageTotal.add(n+1);
		}
		return pageTotal;
	}
	
	/* (non-Javadoc)
	 * @see s47.dqj.dao.SystemLoginDaoInf#findAllByDpidAndSldate(s47.dqj.bean.SystemLogin, java.lang.Integer)
	 */
	@Override
	public List<SystemLogin> findAllByDpidAndSldate(SystemLogin systemLogin,Integer pageNum){
		String hql="from SystemLogin as sl where sl.dpid.dpid=:dpid and sl.sldate=:sldate";
		Query query=getSession().createQuery(hql);
		query.setInteger("dpid", systemLogin.getDpid().getDpid());
		query.setDate("sldate", systemLogin.getSldate());	
		query.setFirstResult((pageNum-1)*20);
		query.setMaxResults(20);
		return query.list();
	}
	/* (non-Javadoc)
	 * @see s47.dqj.dao.SystemLoginDaoInf#selectPageTotalByDpidAndSldate(s47.dqj.bean.SystemLogin)
	 */
	@Override
	public List<Integer> selectPageTotalByDpidAndSldate(SystemLogin systemLogin){
		List<Integer> pageTotal=new ArrayList<Integer>();
		int p;
		Long temp;
		String hql="select Count(*) from SystemLogin as sl where sl.dpid.dpid=:dpid and sl.sldate=:sldate";
		Query query=getSession().createQuery(hql);
		query.setInteger("dpid", systemLogin.getDpid().getDpid());
		query.setDate("sldate", systemLogin.getSldate());	
		temp=(Long)query.uniqueResult();
		
		if(temp%20!=0)
			p=(int)(temp/20+1);
		else
			p=(int)(temp/20);
		for(int n=0;n<p;n++){
			pageTotal.add(n+1);
		}
		return pageTotal;
	}
	/* (non-Javadoc)
	 * @see s47.dqj.dao.SystemLoginDaoInf#save(s47.dqj.bean.SystemLogin)
	 */
	@Override
	public void save(SystemLogin systemLogin){
		//System.out.println("sysLogin=========");
		getHibernateTemplate().save(systemLogin);
	}
	
	/* (non-Javadoc)
	 * @see s47.dqj.dao.SystemLoginDaoInf#update(s47.dqj.bean.SystemLogin)
	 */
	@Override
	public void update(SystemLogin systemLogin){
		getHibernateTemplate().update(systemLogin);
	}
	
	/* (non-Javadoc)
	 * @see s47.dqj.dao.SystemLoginDaoInf#delete(s47.dqj.bean.SystemLogin)
	 */
	@Override
	public void delete(SystemLogin systemLogin){
		getHibernateTemplate().delete(systemLogin);
	}
	/* (non-Javadoc)
	 * @see s47.dqj.dao.SystemLoginDaoInf#findObject(s47.dqj.bean.SystemLogin)
	 */
	@Override
	public SystemLogin findObject (SystemLogin systemLogin){
		return getHibernateTemplate().get(SystemLogin.class,systemLogin.getSlid());
	}
	 
	
}
